¸®½À °­Á - µÎÁ¡ »çÀ̸¦ Áö³ª´Â ¸ðµç ¿ÀºêÁ§Æ®ÀÇ ±³Â÷Á¡ ¸®ÅÏÇÔ¼ö.


º» °­Á´ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)¿¡ ÀÇÇØ ¸¸µé¾î Á³À¸¸ç ¾î¶°ÇÑ À¥À̳ª
ÃâÆǹ°¿¡ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)ÀÇ µ¿ÀǾøÀÌ ¿Ã¸®´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù.

 

µÎ Á¡°ú µÎÁ¡»çÀÌ¿¡ Á¸ÀçÇÏ´Â ¿ÀºêÁ§Æ®¿ÍÀÇ ±³Â÷Á¡ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ´Â ÇÔ¼ö ÀÔ´Ï´Ù.

±èÆǼ· ´ÔÀÌ ¼Ò½º¸¦ Á¦°øÇØ Áּ̰í Á¦°¡ ¸®½ÀÇÔ¼ö·Î½á »ç¿ëÇÒ¼ö ÀÖµµ·Ï ¼öÁ¤Çß½À´Ï´Ù.



(vl-Get-Int-Pt  ù¹ø° point , µÎ¹ø° point) => ±³Â÷Á¡ ¸®½ºÆ® ¸®ÅÏ. ±³Â÷Á¡ÀÌ ¾øÀ¸¸é Nil ¸®ÅÏ.

(vl-Get-Int-Pt point1 point2)


=> ((54787.5 20479.5 0.0) (56656.1 20813.8 0.0) 
(59038.6 21240.0 0.0) (60627.4 21524.2 0.0) (61564.7 21691.8 0.0) (64103.6 22146.0 0.0)
(68404.1 22915.3 0.0) (69224.1 23062.0 0.0))


ÄÚµå

  (defun kht:list->safearray (lst datatype)
    (vlax-safearray-fill
      (vlax-make-safearray
        (eval datatype)
        (cons 0 (1- (length lst)))
      )
      lst
    )
  )

(defun vl-Get-Int-Pt (FirstPoint SecondPoint /
                             acadDocument mSpace SSetName SSets SSet reapp ex obj
                             Baseline  )
  (vl-load-com)
  (setq acadDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq mSpace (vla-get-ModelSpace acadDocument))
  (setq SSetName "MySSet")
  (setq SSets (vla-get-SelectionSets acadDocument))

  (if (vl-catch-all-error-p
        (vl-catch-all-apply 'vla-add (list SSets SSetName))
      )
    (vla-clear (vla-Item SSets SSetName))
  ) 
  
  (setq SSet (vla-Item SSets SSetName))

  (setq Baseline (vla-Addline mspace (vlax-3d-point FirstPoint) (vlax-3d-point SecondPoint)))
 
  (vla-SelectByPolygon
    SSet
    acSelectionSetFence
    (kht:list->safearray (append FirstPoint SecondPoint) 'vlax-vbdouble)
  )
  
  (vlax-for obj sset
    (if (setq ex (kht-intersect (vlax-vla-object->ename BaseLine) (vlax-vla-object->ename obj)))
      (setq reapp (append reapp ex))
    )
  )

  (vla-delete BaseLine)

  (setq	reapp (vl-sort reapp '(lambda (e1 e2) (< (car e1) (car e2)))))
  
  reapp
)

¼³¸í

  ;; ÀÌ ÇÔ¼ö´Â ¸®½ºÆ®¸¦ safearray ·Î ÀüȯÇÏ¿© ¸®ÅÏÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
  ;; activex ÇÔ¼ö´Â ¹è¿­ ¶Ç´Â vb µ¥ÀÌŸ Çü½Ä¸¸ Àû¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù.
  ;; ¸Å°³º¯¼ö datatype Àº vlax-vbvariant , vlax-vbstring , vlax-vbinteger µîÀÌ ¿©·¯ ÇüÀÌ ¿Ã¼ö ÀÖ½À´Ï´Ù.
  ;; ´ç¿¬È÷ ¸®½ºÆ®´Â datatype Çü°ú ÀÏÄ¡ÇØ¾ß µË´Ï´Ù.

  (defun kht:list->safearray (lst datatype)
    (vlax-safearray-fill
      (vlax-make-safearray
        (eval datatype)
        (cons 0 (1- (length lst)))
      )
      lst
    )
  )

(defun vl-Get-Int-Pt (FirstPoint SecondPoint /
                             acadDocument mSpace SSetName SSets SSet reapp ex obj
                             Baseline  )
  (vl-load-com)
  (setq acadDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq mSpace (vla-get-ModelSpace acadDocument))
  (setq SSetName "MySSet")
  ;; SelectionSet Ä÷º¼ÇÀ» ¾ò´Â´Ù.
  (setq SSets (vla-get-SelectionSets acadDocument))
  ;; SelectionSet "MySSet" À» ÃʱâÈ­ ÇÑ´Ù.
  ;; ¸¸¾à "MySSet" ÀÌ Àִµ¥ Ãß°¡ ÇÏ¸é ¿¡·¯°¡ ³ª¹Ç·Î ¿¡·¯¸¦ Àâ¾Æ "MySSet" ¸¦ ºñ¿î´Ù.
  (if (vl-catch-all-error-p
        (vl-catch-all-apply 'vla-add (list SSets SSetName))
      )
    (vla-clear (vla-Item SSets SSetName))
  ) 
  ;; SelectionSet "MySSet" À» ¾ò°í.
  (setq SSet (vla-Item SSets SSetName))
  ;; µÎ Æ÷ÀÎÆ®¸¦ ³¡Á¡À¸·Î ÇÏ´Â °¡»óÀÇ ¶óÀÎÀ» ¸¸µç´Ù.
  (setq Baseline (vla-Addline mspace (vlax-3d-point FirstPoint) (vlax-3d-point SecondPoint)))
  ;; acSelectionSetFence ·Î½á µÎÁ¡ »çÀÌÀÇ ¿ÀºêÁ§Æ®¸¦ ¼±ÅÃÇÑ´Ù.
  (vla-SelectByPolygon
    SSet
    acSelectionSetFence
    (kht:list->safearray (append FirstPoint SecondPoint) 'vlax-vbdouble)
    ;; ¸¸¾à ÀÓÀÇÀÇ °´Ã¼ ¶óµçÁö ÀÓÀÇÀÇ ·¹À̾ °¡Áø °´Ã¼¸¸ ¼±º°ÀûÀ¸·Î ¼±ÅÃÇÏ°í ½Í´Ù¸é.
    ;; ¹Ù·Î ¿©±â¿¡ SelectionSet fillter ž³¼ÇÀ» ÁÖ¸é µÈ´Ù.
  )
  ;; ¼±ÅÃµÈ °¢°¢ÀÇ ¿ÀºêÁ§Æ®¿Í °¡»óÀÇ ¶óÀÎÀÌ ±³Â÷ÇÑ´Ù¸é kht-intersect ÇÔ¼ö·Î ±³Â÷Á¡À» ¾ò´Â´Ù.
  (vlax-for obj sset
    (if (setq ex (kht-intersect (vlax-vla-object->ename BaseLine) (vlax-vla-object->ename obj)))
      (setq reapp (append reapp ex))
    )
  )
  ;; °¡»óÀÇ ¶óÀÎÀ» »èÁ¦ ÇÑ´Ù.
  (vla-delete BaseLine)
  ;; ±³Â÷Á¡µéÀ» x ÁÂÇ¥¸¦ ±âÁØÀ¸·Î ¿À¸§Â÷¼øÀ¸·Î Á¤¿­ÇÑ´Ù.
  (setq	reapp (vl-sort reapp '(lambda (e1 e2) (< (car e1) (car e2)))))
  ;; ±³Â÷Á¡µéÀ» ¸®ÅÏÇÑ´Ù.
  reapp
)